package shuju;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    public static void main(String args[]) {
        String answer;
        Scanner rd = new Scanner(System.in);
        System.out.println("等待客户呼叫");

        //（4）通过流的对象可以对数据进行传输（读取和写入）。
        ServerSocket serverForClient = null;
        Socket socketOnServer = null;
        DataOutputStream out = null;
        DataInputStream in = null;
        while (true) {
        try {
            //（1）建立服务器端的socket服务，需要一个端口
            serverForClient = new ServerSocket(2010);
        } catch (IOException e1) {

        }

            try {
                //（2）服务端没有直接流的操作，而是通过accept()方法获取客户端对象，在通过获取到的客户端对象的流和客户端进行通信
                socketOnServer = serverForClient.accept(); //堵塞状态，除非有客户呼叫
                //（3）通过客户端对象获取流对象的方式，读取数据或者写入数据
                out = new DataOutputStream(socketOnServer.getOutputStream());
                in = new DataInputStream(socketOnServer.getInputStream());


                String s = in.readUTF();   //in读取信息，堵塞状态
                System.out.println("服务器收到客户端的回答:" + s);
                answer = rd.next();
                out.writeUTF(answer);
                Thread.sleep(2000);
            } catch (Exception e) {
                System.out.println("客户已断开");
            }
        }
        //（4）一般会关闭客户端，不会关闭服务器。因为服务端是一直提供服务的。
    }
}